/**
 * 给定一个字符串，你需要反转字符串中每个单词的字符顺序，同时仍保留空格和单词的初始顺序。
 * 在字符串中，每个单词由单个空格分隔，并且字符串中不会有任何额外的空格。
 */

#include<string>
#include<stack>
using namespace std;

// 344的变体，关键是确定空格和结尾的位置，用空格截取出每一个单词的位置，然后对每个单词用344的方法
class Solution {
public:
    string reverseWords(string s) {
        int left=0, right=0, n=s.size();
        for(int i=0; i<=n; i++){
            if(s[i] == ' '|| s[i] == '\0'){
                right = i-1;
                while (left<right)
                {
                    swap(s[left], s[right]);
                    ++left;
                    --right;
                }
                left = i+1;
            }
        }
        return s;
    }
};   
